package main

import (
	"fmt"
	"godis/config"
	"godis/lib/logger"
	"godis/resp/handler"
	"godis/tcp"
	"os"
)

const configFile string = "redis.conf"

var defaultProperties = &config.ServerProperties{ // 如果没有配置文件，那么遵循的默认配置如下
	Bind: "0.0.0.0",
	Port: 6379,
}

func fileExists(filename string) bool { // 判断配置文件在不在
	info, err := os.Stat(filename)
	// 获取文件状态之后，判断返回err是否为nil并且判断这个东西不能是Dir
	return err == nil && !info.IsDir()
}

func main() {
	logger.Setup(&logger.Settings{
		Path: "logs",
		Name: "godis",
		Ext:  "log",
		//TimeFormat: "2006-01-02 15:04:05" ,
		TimeFormat: "2006-01-02",
	})
	if fileExists(configFile) {
		config.SetupConfig(configFile)
		print("using config file\n")
	} else {
		config.Properties = defaultProperties
		print("using defaultProperties\n")
	}

	err := tcp.ListenAndServeWithSignal(
		&tcp.Config{
			Address: fmt.Sprintf("%s:%d", config.Properties.Bind, config.Properties.Port),
		},
		//tcp.MakeHandler()
		handler.MakeHandler())
	if err != nil {
		logger.Error(err)
	}

}
